package com.greentreecs.fms.util;

import com.alibaba.excel.EasyExcel;
import com.greentreecs.fms.constant.ReportTableConstant;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * @author 刀氏春秋
 * @date 2023/12/4
 */
public class ExportExcelUtil<T> {
    private final static Logger logger = LoggerFactory.getLogger(ExportExcelUtil.class);

    /**
     * 导出Excel表
     *
     * @param reportList 待导出数据列表
     * @param reportName 待导出数据名
     * @param dtoClz     待导出数据元素类型
     */
    public void exportResultData(List<T> reportList, String reportName, Class<T> dtoClz) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        // 文件名由根目录、时间、报告名和文件后缀组成
        String filename = ReportTableConstant.INC_OUTC_BAL_BASE_DIR
                + formatter.format(new Date())
                + reportName
                + ReportTableConstant.TABLE_FILE_TYPE;
        EasyExcel.write(filename, dtoClz).sheet(reportName).doWrite(reportList);
        logger.info("报告表: {}导出完毕", reportName);
    }

    /**
     * 导出Excel表（不带日期）
     *
     * @param reportList 待导出数据列表
     * @param reportName 待导出数据名
     * @param dtoClz     待导出数据元素类型
     */
    public void exportResultDataWithoutDate(List<T> reportList, String reportName, Class<T> dtoClz) {
        String filename = ReportTableConstant.INC_OUTC_BAL_BASE_DIR
                + reportName
                + ReportTableConstant.TABLE_FILE_TYPE;
        EasyExcel.write(filename, dtoClz).sheet(reportName).doWrite(reportList);
        logger.info("报告表: {}导出完毕", reportName);
    }
}
